package from_0_to_50;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Q04 {
    public static void main(String[] args) {
//        int[] nums1 = {1,3}, nums2 = {2};
//        int[] nums1 = {1,2}, nums2 = {3,4};
        int[] nums1 = {0,0}, nums2 = {0,0};
        System.out.println("findMedianSortedArrays(nums1,nums2) = " + findMedianSortedArrays(nums1, nums2));
    }
    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int median1=0,median2=0;
        double result = 0f;
        int nums1Len = nums1.length,nums2Len = nums2.length;
//
//        if(nums1Len == 0 || nums2Len == 0){
//            if(nums1Len == 0){
//                median1 =  nums2[nums2Len/2];
//                median2 = nums2Len%2==0 ? nums2[nums2Len/2-1] : 0;
//            }else {
//                median1 = nums1[nums1Len/2];
//                median2 = nums1Len%2==0 ?nums1[nums1Len/2-1] : 0;
//            }
//        }else {
//            int i = -1, j = -1;
//            for (int k = 0; k < (nums1Len+nums2Len)/2-1; k++) {
//                if(nums1[i+1] < nums2[j+1] && i+1 < nums1Len){
//                    i++;
//                }else {
//                    j++;
//                }
//            }
//
//            median1 = i+1 < nums1Len && nums1[i+1] < nums2[j+1] ? nums1[++i] : nums2[++j];
//            median2 = i+1 < nums1Len && nums1[i+1] < nums2[j+1] ? nums1[++i] : nums2[++j];
//            if((nums1Len+nums2Len) % 2 == 0)
//                result = (double) (median1+median2)/2;
//            else
//                result = (double)(median2);
//            System.out.println("median1 = " + median1);
//            System.out.println("median2 = " + median2);
//        }
        int[] numsT1 = new int[nums1.length+1];
        int[] numsT2 = new int[nums2.length+1];
        for (int i = 1; i < nums1.length+1; i++) {
            numsT1[i] = nums1[i-1];
        }
        for (int i = 1; i < nums2.length+1; i++) {
            numsT2[i] = nums2[i-1];
        }
        int i = 0, j = 0;
        for (int k = 0; k < (nums1Len+nums2Len+2)/2; k++) {
            if(nums1[i+1] <= nums2[j+1] && i+1 < nums1Len+1){
                i++;
            }else {
                i++;
            }
        }
        median1 = i+1 < nums1Len && nums1[i+1] < nums2[j+1] ? nums1[++i] : nums2[++j];
        median2 = i+1 < nums1Len && nums1[i+1] < nums2[j+1] ? nums1[++i] : nums2[++j];
        if((nums1Len+nums2Len) % 2 == 0)
                result = (double) (median1+median2)/2;
            else
                result = (double)(median2);
        return result ;
    }
}
